package com.sg.model.app.po;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.io.Serial;
import lombok.experimental.Accessors;

import jakarta.validation.constraints.NotNull;
import java.io.Serializable;
import java.util.Date;

/**
 * 用于被评对象指标周期的目标设置
 *
 * @author xxx
 */
@Data
@Accessors(chain = true)
@TableName("oms_eva_obj_target_cycle_oset")  //3-3-09-01被评对象目标周期目标设置表
public class OmsEvaObjTargetCycleOset implements Serializable {

  @Serial
    private static final long serialVersionUID = 1L;

  /**
   * 被评对象目标设置ID
   */
  @TableId(value = "eva_obj_oset_id", type = IdType.ASSIGN_UUID)
  @NotNull(message = "evaObjOsetId不能为空")
  private String evaObjOsetId;

  /**
   * 评价模板评价画像目标周期ID
   */
  @TableField(value = "eva_portrait_target_cycle_id")
  @Schema(description = "评价模板评价画像目标周期ID")
  private String evaPortraitTargetCycleId;

  /**
   * 评价模板评价对象目标周期ID
   */
  @TableField(value = "eva_obj_target_cycle_id")
  @Schema(description = "评价模板评价对象目标周期ID")
  private String evaObjTargetCycleId;

  /**
   * 一级部门目标任务责任部门目标周期ID
   */
  @TableField(value = "m_level_eva_obj_target_cycle_id")
  @Schema(description = "一级部门目标任务责任部门目标周期ID")
  private String mLevelEvaObjTargetCycleId;

  /**
   * OKR责任主体部门目标周期ID
   */
  @TableField(value = "okr_dpt_eva_obj_target_cycle_id")
  @Schema(description = "OKR责任主体部门目标周期ID")
  private String okrDptEvaObjTargetCycleId;

  /**
   * OKR责任主体个人目标周期ID
   */
  @TableField(value = "okr_ps_eva_obj_target_cycle_id")
  @Schema(description = "OKR责任主体个人目标周期ID")
  private String okrPsEvaObjTargetCycleId;

  /**
   * 起始值
   */
  @TableField(value = "target_start_value")
  @Schema(description = "起始值")
  private Double targetStartValue;

  /**
   * 目标值
   */
  @TableField(value = "target_value")
  @Schema(description = "目标值")
  private Double targetValue;

  /**
   * 展示目标值
   */
  @TableField(value = "show_target_value")
  @NotNull(message = "展示目标值不能为空")
  @Schema(description = "展示目标值")
  private Double showTargetValue;

  /**
   * 诊断值
   */
  @TableField(value = "target_diagnostic_value")
  @Schema(description = "诊断值")
  private Double targetDiagnosticValue;

  /**
   * 冗余单位
   */
  @TableField(value = "unit")
  @NotNull(message = "冗余单位不能为空")
  @Schema(description = "冗余单位")
  private String unit;

  /**
   * 目标值计算方式 INITIAL_VALUE_COUNT:按起始值计算 TARGET_VALUE_COUNT:按目标值计算
   */
  @TableField(value = "target_value_count_type")
  @NotNull(message = "目标值计算方式不能为空")
  @Schema(description = "目标值计算方式")
  private String targetValueCountType;

  /**
   * 冗余指标业务类型 NUMBER_GROWTH:数量增长型 NUMBER_DECLINE:数量降幅型 PERCENTAGE_GROWTH:百分比增长型 PERCENTAGE_DECLINE:百分比降幅型 PROGRESS:进度型 RATIO_GROWTH:比率增长型 RATIO_DECLINE:比率降幅型 SUBJECTIVE_QUALITATIVE:主观定性
   */
  @TableField(value = "target_value_type")
  @NotNull(message = "冗余指标业务类型不能为空")
  @Schema(description = "冗余指标业务类型")
  private String targetValueType;

  /**
   * 运算符号 GREATER_THAN:大于 LESS_THAN:小于 EQUAL:等于 GREATER_EQUAL_THAN:大于等于 LESS_EQUAL_THAN:小于等于 ALL_NOT_EQUAL:均不低于 ALL_NOT_GREATER:均不高于
   */
  @TableField(value = "logical_operator")
  @Schema(description = "运算符号")
  private String logicalOperator;

  /**
   * 是否引用实际值 TRUE:是 FALSE:否
   */
  @TableField(value = "is_quoteactual_value")
  @Schema(description = "是否引用实际值")
  private String isQuoteactualValue;

  /**
   * 是否引用达成度 TRUE:是 FALSE:否
   */
  @TableField(value = "is_quote_reach")
  @Schema(description = "是否引用达成度")
  private String isQuoteReach;

  /**
   * 是否引用资料 TRUE:是 FALSE:否
   */
  @TableField(value = "is_quote_data")
  @Schema(description = "是否引用资料")
  private String isQuoteData;

  /**
   * 是否被引用 TRUE:是 FALSE:否
   */
  @TableField(value = "is_be_quote")
  @NotNull(message = "是否被引用不能为空")
  @Schema(description = "是否被引用")
  private String isBeQuote;

  /**
   * 是否已引用 TRUE:是 FALSE:否
   */
  @TableField(value = "is_already_quote")
  @NotNull(message = "是否已引用不能为空")
  @Schema(description = "是否已引用")
  private String isAlreadyQuote;

  /**
   * 引用被评对象目标周期ID
   */
  @TableField(value = "quote_eva_obj_target_cycle_id")
  @Schema(description = "引用被评对象目标周期ID")
  private String quoteEvaObjTargetCycleId;

  /**
   * 批次标识
   */
  @TableField(value = "batch_code")
  @NotNull(message = "批次标识不能为空")
  @Schema(description = "批次标识")
  private String batchCode;

  /**
   * 冗余评价模板ID
   */
  @TableField(value = "evaluation_template_id")
  @NotNull(message = "冗余评价模板ID不能为空")
  @Schema(description = "冗余评价模板ID")
  private String evaluationTemplateId;

  /**
   * 创建于批次标识
   */
  @TableField(value = "create_batch_code")
  @Schema(description = "创建于批次标识")
  private String createBatchCode;

  /**
   * 批次开始时间
   */
  @TableField(value = "batch_start_time")
  @Schema(description = "批次开始时间")
  private Date batchStartTime;

  /**
   * 批次结束时间
   */
  @TableField(value = "batch_endt_time")
  @NotNull(message = "批次结束时间不能为空")
  @Schema(description = "批次结束时间")
  private Date batchEndtTime;

  /**
   * 批次下是否更新 TRUE:是 FALSE:否
   */
  @TableField(value = "is_update")
  @NotNull(message = "批次下是否更新不能为空")
  @Schema(description = "批次下是否更新")
  private String isUpdate;

  /**
   * 批次下更新状态 NEW:本次新增 UNCHANGED:正常未变 REVISION:本次修订 ARCHIVE:本次存档
   */
  @TableField(value = "update_status")
  @NotNull(message = "批次下更新状态不能为空")
  @Schema(description = "批次下更新状态")
  private String updateStatus;

  /**
   * 存档类型 NOT_ARCHIVE:未归档 TOBE_ARCHIVING:想归档 ARCHIVED:已归档
   */
  @TableField(value = "archivng_type")
  @NotNull(message = "存档类型不能为空")
  @Schema(description = "存档类型")
  private String archivngType;

  /**
   * 是否未来 TRUE:是 FALSE:否
   */
  @TableField(value = "is_editing")
  @NotNull(message = "是否未来不能为空")
  @Schema(description = "是否未来")
  private String isEditing;

  /**
   * 是否存档 TRUE:是 FALSE:否
   */
  @TableField(value = "is_archive")
  @NotNull(message = "是否存档不能为空")
  @Schema(description = "是否存档")
  private String isArchive;

  /**
   * 主体生命周期 CURRENTLY_VALID:当前有效 EDITING:正在编辑 ARCHIVING:历史存档
   */
  @TableField(value = "subject_life_cycle")
  @NotNull(message = "主体生命周期不能为空")
  @Schema(description = "主体生命周期")
  private String subjectLifeCycle;

  /**
   * 操作人就职记录ID
   */
  @TableField(value = "operation_induction_id")
  @NotNull(message = "操作人就职记录ID不能为空")
  @Schema(description = "操作人就职记录ID")
  private String operationInductionId;

  /**
   * 创建人就职记录ID
   */
  @TableField(value = "create_induction_id")
  @NotNull(message = "创建人就职记录ID 不能为空")
  @Schema(description = "创建人就职记录ID ")
  private String createInductionId;

  /**
   * 发布人就职记录ID
   */
  @TableField(value = "release_induction_id")
  @Schema(description = "发布人就职记录ID")
  private String releaseInductionId;

  /**
   * 存档人就职记录ID
   */
  @TableField(value = "archive_induction_id")
  @Schema(description = "存档人就职记录ID")
  private String archiveInductionId;

  /**
   * 操作时间
   */
  @TableField(value = "operate_time")
  @NotNull(message = "操作时间不能为空")
  @Schema(description = "操作时间")
  private Date operateTime;

  /**
   * 创建时间
   */
  @TableField(value = "create_time")
  @NotNull(message = "创建时间不能为空")
  @Schema(description = "创建时间")
  private Date createTime;

  /**
   * 发布时间
   */
  @TableField(value = "release_time")
  @Schema(description = "发布时间")
  private Date releaseTime;

  /**
   * 存档时间
   */
  @TableField(value = "archive_time")
  @Schema(description = "存档时间")
  private Date archiveTime;

  /**
   * 是否作废 TRUE:是 FALSE:否
   */
  @TableField(value = "is_valid")
  @NotNull(message = "是否作废不能为空")
  @Schema(description = "是否作废")
  private String isValid;

  /**
   * 创建于空间ID
   */
  @TableField(value = "space_id")
  @NotNull(message = "创建于空间ID不能为空")
  @Schema(description = "创建于空间ID")
  private String spaceId;

  /**
   * 创建于联盟应用ID
   */
  @TableField(value = "app_id")
  @NotNull(message = "创建于联盟应用ID不能为空")
  @Schema(description = "创建于联盟应用ID")
  private String appId;
}
